<?php
    namespace Utils\Couleur;
    /**
     * Une CouleurRGB est un objet représentant une couleur sous sa forme Hexadécimale (Exemple : #000000)
     *
     * @author mpetrini
     */
    class CouleurRGB extends Couleur {
        /**
        * @var int $rouge 
        */
        protected $rouge;
        /**
        * @var int $bleu 
        */
        protected $bleu;
        /**
        * @var int $vert 
        */
        protected $vert;

        /**
        * Constructeur complet
        * 
        * @param int $rouge
        * @param int $bleu
        * @param int $vert
        *  
        * @return void 
        */
        public function __construct($rouge, $bleu, $vert) {
            try {
                $this->setRouge($rouge);
            } catch(\ExceptionApplication $e) {
                throw $e;
            }
            try {
                $this->setBleu($bleu);
            } catch(\ExceptionApplication $e) {
                throw $e;
            }
            try {
                $this->setVert($vert);
            } catch(\ExceptionApplication $e) {
                throw $e;
            }
        }

        /**
        * Vérifie si la valeur passé entre paramètre est entre 0 et 255
        * 
        * @throws ExceptionApplication
        * 
        * @param int $valeur
        *  
        * @return void 
        */
        public function verificationCouleur($valeur) {
            $valeur = intval($valeur);
            if($valeur > 255) {
                throw new \ExceptionApplication("Le nombre rentré pour cette couleur est trop élevé", 1);
            }
            return $valeur;
        }

        //GETTERS ET SETTERS
        public function getRouge() {return $this->rouge;}
        public function setRouge($rouge) {
            try {
                $this->rouge = $this->verificationCouleur($rouge);
            }
            catch(\ExceptionApplication $e) {
                throw $e;
            }
        }
        public function getVert() {return $this->vert;}
        public function setVert($vert) {
            try {
                $this->vert = $this->verificationCouleur($vert);
            }
            catch(\ExceptionApplication $e) {
                throw $e;
            }
        }
        public function getBleu() {return $this->bleu;}
        public function setBleu($bleu) {
            try {
                $this->bleu = $this->verificationCouleur($bleu);
            }
            catch(\ExceptionApplication $e) {
                throw $e;
            }
        }
    }
?>
